页面结构
1 | NotificationShadeWindowView //R.layout.super_notification_shade |
通知栏下拉,可以看到的UI有下面几部分:
QS面板:
Quick Quick Settings (QQS) : 即初级展开面板,是一次下拉面板看到的简版QS面板,包含少量的开关
Quick Settings (QS) : 完整QS面板,是二次下拉面板看到的完成QS面板,其包含更多的开关
通知中心:
NotificationStackScrollLayout
编辑页面:
QSCustomer
下图中左边是 QQS,右边为QS区域。
类介绍
1.StatusBar:
collapseShade()
collapsePanel()
makeExpandedInvisible() //设置下拉面板不可见
makeExpandedVisible() //设置下拉面板可见
2.PhoneStatusBarView
panelExpansionChanged()
QS
5.ShadeControllerImpl:ShadeController 的实现类。Shade 可以理解为状态栏的概念,可以有多种状态,比如:dozing, locked, showing the bouncer, occluded 等。ShadeControllerImpl 被 StatusBar 类用来控制 shade 的状态,它提供了下面的集中方法。
animateCollapsePanels():以动画形式收起面板,如果在KEYGUARD状态就显示bouncer view,如果是在 SHADE 就隐藏shade view。
collapsePanel():收起面板。
closeShadeIfOpen():
addPostCollapseAction(Runnable action):如果需要在面板收起时做一些工作,可以用这个方法添加一个Runnable,它只会在下次面板收起时执行一次。
runPostCollapseRunnables():收起面板时执行。
6.QSPanelController:
7.QuickQSPanelController
8.QSFragment 承载 QSPanel的界面。它实现了 QS 接口,提供了折叠和扩展QS中界面的接口。
9.QSContainerImpl quick_settings_container,承载 QuickStatusBarHeader 和 QSPanel。
setFancyClipping,updateClippingPath():通过切图方式来设置 QSContainerImpl 的显示大小。
通过 LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS 和 LOCK_SCREEN_SHOW_NOTIFICATIONS 来设定锁屏通知的显示规则。
mExpandedHeight 的计算方法